package com.itsite.guider.demo.demo

import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.itsite.guider.demo.R
import com.water.guider.Guide
import com.water.guider.Guider
import com.water.guider.highlight.Highlight.roundRect
import com.water.guider.position.Position
import java.util.*

class ListActivity : AppCompatActivity() {
    private var recyclerView: RecyclerView? = null
    private var guider: Guider? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_list)
        initView()
        recyclerView!!.post { initGuider(recyclerView!!.getChildAt(0)) }
    }

    private fun initView() {
        recyclerView = findViewById<View>(R.id.recyclerView) as RecyclerView
        recyclerView!!.layoutManager = GridLayoutManager(this, 2)
        val mData: MutableList<String> = ArrayList()
        for (i in 0..99) {
            mData.add("第" + i + "个")
        }
        recyclerView!!.adapter = object : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
            override fun onCreateViewHolder(
                parent: ViewGroup,
                viewType: Int
            ): RecyclerView.ViewHolder {
                val textView = TextView(this@ListActivity)
                textView.gravity = Gravity.CENTER
                textView.layoutParams = ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT
                )
                textView.setPadding(50, 50, 50, 50)
                return object : RecyclerView.ViewHolder(textView) {}
            }

            override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
                (holder.itemView as TextView).text = mData[position]
                holder.itemView.setOnClickListener { initGuider(holder.itemView) }
            }

            override fun getItemCount(): Int {
                return mData.size
            }
        }
    }

    fun initGuider(position: View?) {
        val guide0 = Guide.Builder()
            /**
             * 设置想要添加高亮的View。
             */
            .setPoint(position!!)
            /**
             * 设置指引View的相对位置，有上下左右中等多个位置，可实现IPosition接口自定义位置。
             */
            .setPosition(Position.top())
            /**
             * 设置高亮，有多种形状可选择，可实现IHighlight接口自定义位置。
             */
            .setHighlight(roundRect())
            /**
             * 设置指引View，可以是View也可以是Layout。
             */
            .setView(R.layout.guide_2)
            .build()
        guider = Guider.Builder()
            /**
             * 设置锚点，可以是Activity、Fragment和任意View，最终都会找到其相应的Activity然后找到DecorView或者window对象，然后添加上去。
             */
            .setAnchor(this)
            /**
             * 如果是NEXT模式的话，先添加的先显示。还有addGuide()函数也可以添加Guide。
             */
            .addGuide(guide0)
            /**
             * Guider.MODE_NEXT表示一个接着一个显示，one by one.默认值。
             * Guider.MODE_TOGETHER表示多个Guide一起显示。
             */
            .setMode(Guider.MODE_NEXT)
            .show()
    }

    override fun onBackPressed() {
        if (guider!!.isVisible) {
            guider!!.dismiss()
        } else {
            super.onBackPressed()
        }
    }
}